import interfaces.Hamujacy;
import interfaces.Jezdzacy;
import interfaces.Przyspieszajacy;
import pojazdy.*;

import java.awt.*;
import java.util.ArrayList;

/**
 * Autor: Daniel Michalski
 * Data: 01.08.13
 */

public class Main {
    public static void main(String[] args) {
        // Tworzenie obiektow
        Samochod samochod1 = new Samochod("volvo", "s60", 60);
        Samochod samochod2 = new Samochod("volkswagen", "passat", 80);

        Color color = new Color(156, 159, 58);
        Rower rower1 = new Rower("romet", Color.black, 15, WielkoscKol.duze);
        Rower rower2 = new Rower("romet", color, 15, WielkoscKol.male);

        Motocykl motocykll = new Motocykl("Yamaha", 90, true);
        Motocykl motocykl2 = new Motocykl("Suzuki", 100, true);

        // Pojazd pojazd1 = new Pojazd(23, "Seat");    // nie mozna utworzyc poniewaz pojazd jest abstrakcyjny


        // Tworzenie listy pojazdow jezdzacych
        ArrayList<Jezdzacy> pojazdyJezdzace = new ArrayList<Jezdzacy>();
        pojazdyJezdzace.add(samochod1);
        pojazdyJezdzace.add(samochod2);
        pojazdyJezdzace.add(rower1);
        pojazdyJezdzace.add(rower2);
        pojazdyJezdzace.add(motocykll);
        pojazdyJezdzace.add(motocykl2);

        // for each dla kazdego jezdzacego pojazdu
        for (Jezdzacy jezdzacy : pojazdyJezdzace) {
            jezdzacy.jedz();
        }

        // Tworzenie listy pojazdow przyspieszajacych
        ArrayList<Przyspieszajacy> pojazdyPrzyspieszajacy = new ArrayList<Przyspieszajacy>();
        pojazdyPrzyspieszajacy.add(samochod1);
        pojazdyPrzyspieszajacy.add(samochod2);
        pojazdyPrzyspieszajacy.add(motocykll);
        pojazdyPrzyspieszajacy.add(motocykl2);
        pojazdyPrzyspieszajacy.add(rower1);
        pojazdyPrzyspieszajacy.add(rower2);

        // for each dla kazdego pojazdu przyspieszajacego
        for (Przyspieszajacy przyspieszajacy : pojazdyPrzyspieszajacy) {
            przyspieszajacy.przyspiesz(15);
        }

        // Tworzenie listy pojazdow hamujacych
        ArrayList<Hamujacy> pojazdyHamujace = new ArrayList<Hamujacy>();
        pojazdyHamujace.add(samochod1);
        pojazdyHamujace.add(samochod2);
        pojazdyHamujace.add(motocykll);
        pojazdyHamujace.add(motocykl2);
        pojazdyHamujace.add(rower1);
        pojazdyHamujace.add(rower2);

        // for each dla kazdego pojazdu hamujacego
        for (Hamujacy hamujacy : pojazdyHamujace) {
            hamujacy.hamuj();
        }
    }
}















// Błędny sposób

       /* ArrayList<Object> pojemnikNaPojazdy = new ArrayList<Object>();
        pojemnikNaPojazdy.add(samochod1);
        pojemnikNaPojazdy.add(samochod2);
        pojemnikNaPojazdy.add(motocykll);
        pojemnikNaPojazdy.add(motocykl2);
        pojemnikNaPojazdy.add(rower1);
        pojemnikNaPojazdy.add(rower2);


        for (Object objectpojazdow : pojemnikNaPojazdy) {
            if (objectpojazdow instanceof Motocykl) {
                Motocykl nowyMotocykl = (Motocykl) objectpojazdow;
                nowyMotocykl.jedz();
            }
            if (objectpojazdow instanceof Samochod) {
                Samochod nowySamochod = (Samochod) objectpojazdow;
                nowySamochod.jedz();
            }
            if (objectpojazdow instanceof Rower) {
                Rower nowyRower = (Rower) objectpojazdow;
                nowyRower.jedz();
            }
        }*/